繼 迴圈 可以同時對相同邏輯命名執行 as 的教學之後,
今天要再來說說另外幾個我比較常用的as功能,
有的可以在語法上讓運算更為簡便,而有的我自己覺得可以更一目了然所寫的東西~
另外~話說之前在上傳奇人物 保哥 的 js 課程的時候,
在課堂上有實戰一小段 js 的語法,其實也發現到許多地方跟as寫法相去無幾,
所以說...這對之後寫 jq 有幫助嗎...阿災~XDDD
這雖然很基本,但我也是到 3.0 後才開始會用的,
以前2.0只會四招 stop(); play(); gotoAndStop(); gotoAndPlay();
直到 3.0 開始我才有習慣先設定 變數 var 的寫法,
至於怎麼用,我以昨天的 迴圈 範例來說好了~
/* 人物屬性*/
for( var i=1; i<=4; i++){
this["p0"+i+"_btn"].addEventListener(MouseEvent.CLICK, this["attribute_0"+i] );
}
function attribute_01(e) {
for( var i=1; i<=3; i++){
this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX*1.1;
this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY*1.1;
}
}
function attribute_02(e) {
for( var i=1; i<=3; i++){
this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX/1.1;
this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY/1.1;
}
}
function attribute_03(e) {
for( var i=1; i<=3; i++){
this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha + 0.1;
}
}
function attribute_04(e) {
for( var i=1; i<=3; i++){
this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha - 0.1;
}
}
有發現到,有很多地方都是 i<=3; 是因為我目前的 btn 只有3個的緣故,
但若之後我要多加一個 btn ,就得要一個一個地把 i<=3; 改成 i<=4;
不但容易出包而且又厭世~~實在很不好!!
所以我們可以在最上層先 指定(宣告)一個變數,讓它來代表 3 這個數字,
var btnNb:Number = 3;
這表示我用一個變數名稱 btnNb 來代表 3,i<=3; 就可以改成 i<=btnNb;
原始碼就可以整個改成
/* 人物屬性*/
var btnNb:Number = 3;
for( var i=1; i<=4; i++){
this["p0"+i+"_btn"].addEventListener(MouseEvent.CLICK, this["attribute_0"+i] );
}
function attribute_01(e) {
for( var i=1; i<=btnNb; i++){
this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX*1.1;
this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY*1.1;
}
}
function attribute_02(e) {
for( var i=1; i<=btnNb; i++){
this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX/1.1;
this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY/1.1;
}
}
function attribute_03(e) {
for( var i=1; i<=btnNb; i++){
this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha + 0.1;
}
}
function attribute_04(e) {
for( var i=1; i<=btnNb; i++){
this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha - 0.1;
}
}
這樣就可以讓 迴圈 同時指定相同數字,以後即使增加按鈕只要更改變 btnNb 就可以了~!!
這個功能應該是當初我寫 as 的時候花很多時間才比較能掌握的語法,(沒辦法腦袋鈍鈍)
但後來摸了一段時間熟悉一點後,偷懶會常常拿它來取代 var 變數~~雖然有時候還是會出包...
他的基本用法大概是這樣
var btnNb2(自己取名):Array = new Array();
btnNb2 = [3,4];
其實還可以再縮短,但這樣講解會比較方便一點,
上述意思就是,我有個 陣列(Array) 名字叫做 btnNb2,
btnNb2 裡面有兩個數值分別是 3 跟 4,
用 btnNb2[0] 這個寫法的話,會得到 3 這個數值,用 btnNb2[1] 就會得到 4 ,
是因為 btnNb2 的 陣列 中 [ ] 裡的數值是你要呼叫 陣列 的第幾順位的值,
而 陣列 中,第一個值是 0 唷,不是 1 ,所以 3 是 btnNb2[0] ~~
解說完之後,我們拿上方的範例來修改一下~就會變成
/* 人物屬性*/
//var btnNb:Number = 3;
var btnNb2:Array = new Array();
btnNb2 = [3,4];
for( var i=1; i<=btnNb2[1]; i++){
this["p0"+i+"_btn"].addEventListener(MouseEvent.CLICK, this["attribute_0"+i] );
}
function attribute_01(e) {
for( var i=1; i<=btnNb2[0]; i++){
this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX*1.1;
this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY*1.1;
}
}
function attribute_02(e) {
for( var i=1; i<=btnNb2[0]; i++){
this["p0"+i+"_mc"].scaleX = this["p0"+i+"_mc"].scaleX/1.1;
this["p0"+i+"_mc"].scaleY = this["p0"+i+"_mc"].scaleY/1.1;
}
}
function attribute_03(e) {
for( var i=1; i<=btnNb2[0]; i++){
this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha + 0.1;
}
}
function attribute_04(e) {
for( var i=1; i<=btnNb2[0]; i++){
this["p0"+i+"_mc"].alpha = this["p0"+i+"_mc"].alpha - 0.1;
}
}
很方便吧,這樣只要把我們所要用的數值先用 陣列 裝好之後,
再讓需要的地方一一套用,這樣~~以後我們要修改數值都會相當的方便~ :D